// 导入自己封装的 axios 库
import { axios } from '../../request/myAxios';

// let goodsObj = {};

Page({
  // 用一个对象管理加入购物车的商品数据
  goodsObj: {},
  /**
   * 页面的初始数据
   */
  data: {
    pics: [],
    goods_price: '', 
    goods_name: '', 
    goods_introduce: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.getGoodsDetail();
  },
  // 获取商品的请求
  getGoodsDetail(){
    // 页面参数也可以通过页面的实例获取 this.options
    const { goods_id } = this.options;
    axios({ 
      url: '/goods/detail',
      data:{
        goods_id
      }
    })
    .then(res=>{
      // console.log(res);
      let { pics, goods_price, goods_name, goods_introduce } = res;
      // 获取系统信息
      const { system } = wx.getSystemInfoSync();
      // console.log(system);
      // 判断是否为 ios 平台，如果是 ios 平台就用正则把 webp 图片路径替换一下
      if( system.toLowerCase().indexOf('ios') > -1 ){
        // ?from=mobile&format=80q.webp
        
        // \?       转义问号
        // .+?      点代表任意字符, +至少一个，? 用来结束第一个匹配(防止贪婪)
        // g        全部匹配
        goods_introduce = goods_introduce.replace(/\?.+?webp/g,'');
      }
      // 更新数据
      this.setData({
        pics, goods_price, goods_name, goods_introduce
      });

      // 把商品核心信息用一个对象管理，用于加入购物车
      this.goodsObj = {
        // 商品名称
        goods_name,
        // 商品价格
        goods_price,
        // 商品 id
        goods_id,
        // 商品图片
        goods_image: res.goods_small_logo
      }

    })
  },

  // 在新页面中全屏预览图片
  showBigImage(e){
    // 获取事件参数，点击的图片链接
    const { current } = e.currentTarget.dataset;
    // 从 data 中获取到数组，但是格式要处理成字符串数组
    const urls = this.data.pics.map(v=> v.pics_big);
    wx.previewImage({
      current,
      // urls 的数组中，每一项只能是图片链接字符串格式
      urls
    });
  },

  // 1.0 加入购物车按钮事件
  addToCart(){

    // 2.0 获取缓存中的购物车数据，如果没有初始化空数组
    const cart = wx.getStorageSync('cart') || [];

    // 3.0 判断商品是否已存储购物车中。
    // 如果商品不存在，返回 index 为 -1
    // 如果存在，返回 index 为数组的索引
    const index = cart.findIndex(v=>v.goods_id === this.goodsObj.goods_id);

    // 4.0 商品不存在，加入购物车数组
    if(index=== -1){
      // 添加选中状态
      this.goodsObj.isSelect = true;
      // 添加初始数量
      this.goodsObj.number = 1;
      // 把商品对象前添加到购物车中
      cart.unshift( this.goodsObj );
    }else{
      // 5.0 如果存在，购物车数量++
      cart[index].number++;
    }

    // 6.0 把数组重新写入到本地存储中
    wx.setStorageSync('cart', cart);
    
    // 7.0 提示用户
    wx.showToast({
      title: '加入成功',
      icon: 'success',
      // 是否显示透明蒙层，防止触摸穿透
      mask: true,
    });
      
  },

  // 立即购买 - 后面再实现
  bugNow(){
    console.log('立即购买');
  },
  goToPageCart(){
    // 跳转到购物车页，购物车页是 tabBar 页，需要用 switchTab
    wx.switchTab({
      url: '/pages/cart/index',
    });
  },

  addToCollect(){
    console.log('加入收藏');
  }

})